/*
 * hex转rgb函数
 * @param {string} hex 16进制颜色值例如#FF0000
 * @returns {object} RGB颜色值对象{r:255,g:0,b:0}
 */

export default function hexToRgb(hex: string) {
  // 移除 # 号
  hex = hex.replace(/^#/, "");

  // 处理 3 位简写格式，例如 #FA0 转换为 #FFAA00
  if (hex.length === 3) {
    hex = hex
      .split("")
      .map((char) => char + char)
      .join("");
  }

  // 确保是有效的 6 位 HEX 代码
  if (!/^([0-9A-F]{6})$/i.test(hex)) {
    throw new Error("Invalid HEX color format");
  }

  // 解析 RGB 值
  const num = parseInt(hex, 16);
  return {
    r: (num >> 16) & 255, // 取出红色部分
    g: (num >> 8) & 255, // 取出绿色部分
    b: num & 255, // 取出蓝色部分
  };
}
